package cn.iocoder.yudao.module.infra.convert.file;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO;
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigRespVO;
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 文件配置 Convert
 *
 * @author 芋道源码
 */
@Mapper
public interface FileConfigConvert {

    FileConfigConvert INSTANCE = Mappers.getMapper(FileConfigConvert.class);

    /**
     * 转换
     *
     * @param bean bean
     * @return {@code FileConfigDO}
     */
    @Mapping(target = "config", ignore = true)
    FileConfigDO convert(FileConfigCreateReqVO bean);

    /**
     * 转换
     *
     * @param bean bean
     * @return {@code FileConfigDO}
     */
    @Mapping(target = "config", ignore = true)
    FileConfigDO convert(FileConfigUpdateReqVO bean);

    /**
     * 转换
     *
     * @param bean bean
     * @return {@code FileConfigRespVO}
     */
    FileConfigRespVO convert(FileConfigDO bean);

    /**
     * 转换列表
     *
     * @param list 列表
     * @return {@code List<FileConfigRespVO>}
     */
    List<FileConfigRespVO> convertList(List<FileConfigDO> list);

    /**
     * 转换分页
     *
     * @param page 分页
     * @return {@code PageResult<FileConfigRespVO>}
     */
    PageResult<FileConfigRespVO> convertPage(PageResult<FileConfigDO> page);

}
